package cn.han;

import java.util.Arrays;
import java.util.Random;

public class BubbleSort {
    public static void main(String[] args) {

        //外层循环控制循环的轮数，有n个数最多比较n-1轮
        int c  = new Random().nextInt(10)+1;
        int max = 0;
        int[] a = new int[c];

        for (int i = 0; i < a.length; i++) {
            int b  = new Random().nextInt(10);
            a[i] = b;



        }//实际开发中使用数组工具类的排序方法sort（数组名）
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
        for (int i = 0; i < a.length-1; i++) {
            boolean flag = false;//冒泡排序优化，设置一个信号量
            System.out.println(i+1);

            //内层循环控制比较次数
            /**上一轮确定的最大值不需要参与本轮的比较，所以i轮确定i个要-i*/
            for (int j = 0; j <a.length-1-i; j++) {
                if (a[j]>a[j+1]){
                    max=a[j];
                    a[j] = a[j+1];
                    a[j+1] = max;
                    flag = true;
                }

            }
            if (flag == false){//如果经历了内层循环的所有比较，flag还是初始值
                //说明，所有数据已排序成功，无需进行下一轮。
                break;
            }

        }
        System.out.println(Arrays.toString(a));
    }
//    public static void main(String[] args) {
//        int c  = new Random().nextInt(10)+1;
//        int max = 0;
//        int[] a = new int[c];
//        for (int i = 0; i < a.length; i++) {
//            int b  = new Random().nextInt(10);
//            a[i] = b;
//
//
//        }
//        for (int i = 0; i < a.length-1; i++) {
//            for (int j = 0; j <a.length-1-i; j++) {
//                if (a[j]>a[j+1]){
//                    max=a[j];
//                    a[j] = a[j+1];
//                    a[j+1] = max;
//                }
//            }
//        }
//        System.out.println(Arrays.toString(a));
//    }

}
